# Copyright (c) 2025 Huawei Technologies Co., Ltd.
# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
# CANN Open Software License Agreement Version 2.0 (the "License").
# Please refer to the License for details. You may not use this file except in compliance with the License.
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
# See LICENSE in the root of the software repository for the full text of the License.

from .aipp_types import (
    AippChannelPaddingParams,
    AippColorSpaceConvParams,
    AippDataTypeConvParams,
    AippPaddingParams,
    AippParams,
    AippSingleLineParams,
    AippSwapParams,
)
from .array import array
from .constexpr import ConstExpr
from .dtype import (
    DataType,
    double,
    half,
    int8,
    int16,
    int32,
    int64,
    float16,
    float32,
    float64,
    float_,
    uint8,
    uint16,
    uint32,
    uint64,
    int_,
    void,
)
from .enums import (
    AippInputFormat,
    BatchMode,
    BlockMode,
    CacheLine,
    CacheMode,
    CacheRwMode,
    CubeFormat,
    DataFormat,
    DcciDst,
    DeqScale,
    GatherMaskMode,
    HardEvent,
    MemDsbT,
    IterateMode,
    IterateOrder,
    LayoutMode,
    MaskMode,
    pad_t,
    PipeID,
    QuantModes,
    ReduceOrder,
    RoundMode,
    ScheduleType,
    TPosition,
    TransposeType,  
    MatmulConfigMode,
)
from .ir_value import GlobalAddress
from .ops import inline, number
from .properties import (
    property,
    DEFAULT_C0_SIZE,
    ONE_BLK_SIZE,
    TOTAL_L0C_SIZE,
    TOTAL_L1_SIZE,
)
from .range import range, static_range
from .tensor import GlobalTensor, LocalTensor, LocalTensorAuto
from .types import (
    BinaryRepeatParams,
    BrcbRepeatParams,
    CopyRepeatParams,
    DataCopyParams,
    DataCopyEnhancedParams,
    DataCopyExtParams,
    DataCopyPadExtParams,
    DataCopyPadParams,
    GatherMaskParams,
    GatherRepeatParams,
    LoadImageToLocalParams,
    Nd2NzParams,
    ShapeInfo,
    SliceInfo,
    TransDataTo5HDParams,
    TransposeParamsExt,
    UnaryRepeatParams,
    Nd2NzParams,
    Nz2NdParamsFull,
    DataCopyCO12DstParams,
)
from .utils import ceildiv, static_assert

__all__ = [
    # .aipp_types
    "AippChannelPaddingParams",
    "AippColorSpaceConvParams",
    "AippDataTypeConvParams",
    "AippPaddingParams",
    "AippParams",
    "AippSingleLineParams",
    "AippSwapParams",
    # .array
    "array",
    # .constexpr
    "ConstExpr",
    # .dtype
    "DataType",
    "double",
    "half",
    "int8",
    "int16",
    "int32",
    "int64",
    "int_",
    "float16",
    "float32",
    "float64",
    "float_",
    "uint8",
    "uint16",
    "uint32",
    "uint64",
    "void",
    # .enums
    "AippInputFormat",
    "BatchMode",
    "BlockMode",
    "CacheMode",
    "CacheRwMode",
    "CubeFormat",
    "DataFormat",
    "DeqScale",
    "GatherMaskMode",
    "HardEvent",
    "MemDsbT",
    "IterateMode",
    "IterateOrder",
    "LayoutMode",
    "MaskMode",
    "pad_t",
    "PipeID",
    "ReduceOrder",
    "RoundMode",
    "ScheduleType",
    "TPosition",
    "TransposeType",
    "QuantModes",
    "CacheLine",
    "DcciDst",
    "MatmulConfigMode",
    # .ir_value
    "GlobalAddress",
    # .ops
    "inline",
    "number",
    # .property
    "property",
    "DEFAULT_C0_SIZE",
    "ONE_BLK_SIZE",
    "TOTAL_L0C_SIZE",
    "TOTAL_L1_SIZE",
    # .core.range
    "range",
    "static_range",
    # .core.tensor
    "GlobalTensor",
    "LocalTensor",
    "LocalTensorAuto",
    # .core.types
    "BinaryRepeatParams",
    "BrcbRepeatParams",
    "CopyRepeatParams",
    "DataCopyEnhancedParams",
    "DataCopyExtParams",
    "DataCopyParams",
    "DataCopyPadExtParams",
    "DataCopyPadParams",
    "GatherMaskParams",
    "GatherRepeatParams",
    "LoadImageToLocalParams",
    "Nd2NzParams",
    "ShapeInfo",
    "SliceInfo",
    "TransDataTo5HDParams",
    "TransposeParamsExt",
    "UnaryRepeatParams",
    "Nd2NzParams",
    "Nz2NdParamsFull",
    "DataCopyCO12DstParams",
    # .core.utils
    "ceildiv",
    "static_assert",
    # .core.array
    "array",
]
